// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.

#pragma once

#include "Common.h"

#include "IObjectMarshaller.h"
#include "Remotable.h"
#include "ObjectMarshaller.h"
#include "CContainer.h"
#include "CWrapper.h"
#include "Base.h"


#include "FileId.h"
#include "VolumeId.h"
#include "IFileIdentification.h"
#include "CFileIdentificationWrapper.h"
#include "FileIdentificationBase.h"
#include "FileIdentificationRemotable.h"
#include "FileIdentification.h"

#include "FileModeFlags.h"
#include "FileQOS.h"
#include "FileSize.h"
#include "IFile.h"
#include "IOComplete.h"
#include "IOCompleteInverse.h"
#include "CFileWrapper.h"
#include "FileBase.h"
#include "FileRemotable.h"
#include "File.h"

#include "IOMode.h"
#include "FileSerial.h"
#include "IFileFilter.h"
#include "CFileFilterWrapper.h"
#include "FileFilterBase.h"
#include "FileFilterRemotable.h"
#include "FileFilter.h"

#include "IFileFind.h"
#include "CFileFindWrapper.h"
#include "FileFindBase.h"
#include "FileFindRemotable.h"
#include "FileFind.h"

#include "ICachedFileConfiguration.h"
#include "CCachedFileConfigurationWrapper.h"
#include "CachedFileConfigurationBase.h"
#include "CachedFileConfigurationRemotable.h"
#include "CachedFileConfiguration.h"

#include "ICacheConfiguration.h"
#include "CCacheConfigurationWrapper.h"
#include "CacheConfigurationBase.h"
#include "CacheConfigurationRemotable.h"
#include "CacheConfiguration.h"

#include "IBlockCacheConfiguration.h"
#include "CBlockCacheConfigurationWrapper.h"
#include "BlockCacheConfigurationBase.h"
#include "BlockCacheConfigurationRemotable.h"
#include "BlockCacheConfiguration.h"

#include "IFileSystemConfiguration.h"
#include "CFileSystemConfigurationWrapper.h"
#include "FileSystemConfigurationBase.h"
#include "FileSystemConfigurationRemotable.h"
#include "FileSystemConfiguration.h"

#include "IFileSystem.h"
#include "CFileSystemWrapper.h"
#include "FileSystemBase.h"
#include "FileSystemRemotable.h"
#include "FileSystem.h"

#include "IFileSystemFilter.h"
#include "CFileSystemFilterWrapper.h"
#include "FileSystemFilterBase.h"
#include "FileSystemFilterRemotable.h"
#include "FileSystemFilter.h"

#include "CachingPolicy.h"
#include "ICache.h"
#include "DestageStatus.h"
#include "DestageStatusInverse.h"
#include "Complete.h"
#include "CompleteInverse.h"
#include "CCacheWrapper.h"
#include "CacheBase.h"
#include "CacheRemotable.h"
#include "Cache.h"

#include "ICacheRepository.h"
#include "CCacheRepositoryWrapper.h"
#include "CacheRepositoryBase.h"
#include "CacheRepositoryRemotable.h"
#include "CacheRepository.h"

#include "ICacheTelemetry.h"
#include "CCacheTelemetryWrapper.h"
#include "CacheTelemetryBase.h"
#include "CacheTelemetryRemotable.h"
#include "CacheTelemetry.h"

#include "RegionPosition.h"
#include "SegmentPosition.h"
#include "IJournalSegment.h"
#include "VisitRegion.h"
#include "VisitRegionInverse.h"
#include "Sealed.h"
#include "SealedInverse.h"
#include "CJournalSegmentWrapper.h"
#include "JournalSegmentBase.h"
#include "JournalSegmentRemotable.h"
#include "JournalSegment.h"

#include "IJournalSegmentManager.h"
#include "VisitSegment.h"
#include "VisitSegmentInverse.h"
#include "CJournalSegmentManagerWrapper.h"
#include "JournalSegmentManagerBase.h"
#include "JournalSegmentManagerRemotable.h"
#include "JournalSegmentManager.h"

#include "JournalPosition.h"
#include "IJournal.h"
#include "VisitEntry.h"
#include "VisitEntryInverse.h"
#include "CJournalWrapper.h"
#include "JournalBase.h"
#include "JournalRemotable.h"
#include "Journal.h"

#include "CachedBlockWriteCount.h"
#include "ICachedBlockWriteCountsManager.h"
#include "CCachedBlockWriteCountsManagerWrapper.h"
#include "CachedBlockWriteCountsManagerBase.h"
#include "CachedBlockWriteCountsManagerRemotable.h"
#include "CachedBlockWriteCountsManager.h"

#include "CachedBlockNumber.h"
#include "CachedBlockId.h"
#include "ClusterNumber.h"
#include "UpdateNumber.h"
#include "CachedBlock.h"
#include "ChunkNumber.h"
#include "SlotNumber.h"
#include "CachedBlockSlot.h"
#include "CachedBlockSlotState.h"

#include "ICachedBlockSlab.h"
#include "ClusterWritten.h"
#include "ClusterWrittenInverse.h"
#include "ClusterRead.h"
#include "ClusterReadInverse.h"
#include "ConsiderUpdate.h"
#include "ConsiderUpdateInverse.h"
#include "VisitSlot.h"
#include "VisitSlotInverse.h"
#include "SlabSaved.h"
#include "SlabSavedInverse.h"
#include "CCachedBlockSlabWrapper.h"
#include "CachedBlockSlabBase.h"
#include "CachedBlockSlabRemotable.h"
#include "CachedBlockSlab.h"

#include "ICachedBlockSlabManager.h"
#include "VisitSlab.h"
#include "VisitSlabInverse.h"
#include "CCachedBlockSlabManagerWrapper.h"
#include "CachedBlockSlabManagerBase.h"
#include "CachedBlockSlabManagerRemotable.h"
#include "CachedBlockSlabManager.h"

#include "IBlockCacheFactory.h"
#include "DetachFileStatusInverse.h"
#include "CBlockCacheFactoryWrapper.h"
#include "BlockCacheFactoryBase.h"
#include "BlockCacheFactory.h"
